1. Optimización del Encabezado YAML

El encabezado YAML es mucho más que solo un título. Permite una personalización profunda del documento de salida. Aquí hemos configurado una tabla de contenidos flotante (toc_float), numeración de secciones (number_sections), y la capacidad de ocultar/mostrar código (code_folding: hide).

2. Informes Parametrizados

Una de las características más potentes de R Markdown es la capacidad de crear “plantillas” de informes que se pueden generar con diferentes entradas. Esto se logra definiendo parámetros en el encabezado YAML.

2.1. Definiendo Parámetros

Añadimos un campo params al YAML. Cada parámetro puede tener un valor por defecto. Para este informe, vamos a parametrizar el análisis del dataset mpg para que el usuario pueda elegir una clase de vehículo.

---
  params:
  clase_vehiculo: "suv"
---

El valor por defecto es "suv", pero podemos cambiarlo al momento de generar el informe.

2.2. Usando Parámetros en el Código

Dentro del código, accedemos a estos valores a través de un objeto de solo lectura llamado params.

En este informe, estamos analizando la clase de vehículo: SUV.

# Filtramos el dataset 'mpg' usando el parámetro definido en el YAML
datos_filtrados <- mpg %>%
  filter(class == params$clase_vehiculo)

# Mostramos un mensaje dinámico
cat(paste("Se encontraron", nrow(datos_filtrados), "vehículos de la clase '", params$clase_vehiculo, "'."))
## Se encontraron 62 vehículos de la clase ' suv '.

Para generar este informe con un parámetro diferente (por ejemplo, “compact”), usarías la siguiente función en la consola de R:

# rmarkdown::render("tu_archivo.Rmd", params = list(clase_vehiculo = "compact"))

3. Elementos Interactivos

Los informes HTML pueden ir más allá de las imágenes y tablas estáticas.

3.1. Tablas Interactivas con DT

El paquete DT (DataTables) permite crear tablas con paginación, búsqueda, y ordenamiento directamente en tu informe HTML. Es ideal para explorar datasets.

datatable(
  datos_filtrados,
  caption = paste("Tabla de datos para la clase:", params$clase_vehiculo),
  options = list(pageLength = 5, autoWidth = TRUE),
  filter = 'top',
  class = 'cell-border stripe'
)

3.2. Gráficos Interactivos con plotly

De manera similar, plotly puede convertir tus gráficos estáticos de ggplot2 en visualizaciones interactivas con información emergente (tooltips), zoom y más.

Primero, creamos un gráfico ggplot estándar.

p <- ggplot(datos_filtrados, aes(x = displ, y = hwy, color = factor(cyl))) +
  geom_point(size = 4, alpha = 0.7) +
  labs(
    title = paste("Eficiencia vs. Cilindrada para:", params$clase_vehiculo),
    x = "Cilindrada del Motor (Litros)",
    y = "Millas por Galón en Carretera (HWY)",
    color = "Cilindros"
  ) +
  theme_minimal()

Ahora, lo convertimos en un objeto plotly con una sola función. El resultado es un gráfico totalmente interactivo.

# La magia ocurre aquí
ggplotly(p)

Gráfico interactivo de eficiencia del combustible.

4. Presentación y Referencias Cruzadas

Mejorar la estructura y la forma en que nos referimos a los elementos del informe es clave para la profesionalidad.

4.1. Referencias Cruzadas

En lugar de decir “ver la figura de abajo”, podemos crear referencias dinámicas a figuras y tablas. Para ello, necesitas un label en el chunk del gráfico (fig.cap también es necesario para las figuras).

Ejemplo: Como se puede observar en la Figura @ref(fig:plotly), existe una relación clara entre la cilindrada y la eficiencia del combustible.

Para las tablas, el label se define con la sintaxis (\#tab:nombre-label) en el caption de la tabla. Por ejemplo: caption: "Mi tabla (\#tab:mi-tabla)".

4.2. Secciones con Pestañas (Tabsets)

Puedes organizar contenido en un formato de pestañas, lo cual es muy útil para no saturar al lector. Para hacerlo, simplemente añade {.tabset} a un encabezado de Markdown. Todos los sub-encabezados de nivel inferior se convertirán en pestañas.

Análisis Detallado (.tabset)

Gráfico

Aquí mostramos de nuevo el gráfico interactivo.

Gráfico interactivo duplicado para la pestaña.

Tabla de Resumen

Aquí presentamos una tabla con estadísticas de resumen.

Datos Crudos

Y aquí, los datos crudos que usamos para el análisis.

5. Flujo de Trabajo y Reproducibilidad

5.1. Caching de Chunks

Si tienes un bloque de código que tarda mucho en ejecutarse (ej. un modelo complejo o una consulta a una base de datos grande), puedes guardar en caché sus resultados. La próxima vez que generes el informe, si el código del chunk no ha cambiado, R Markdown usará el resultado guardado en lugar de re-ejecutarlo.

Para activar el cache, usa la opción cache=TRUE.

# Simulamos un proceso largo
Sys.sleep(5) # Espera 5 segundos
# Este resultado será guardado después de la primera ejecución
paste("Este chunk se ejecutó a las:", Sys.time())
## [1] "Este chunk se ejecutó a las: 2025-07-16 16:01:50.563021"

5.2. Citas y Bibliografía

R Markdown se integra perfectamente con gestores de referencias. Primero, crea un archivo de bibliografía (por ejemplo, refs.bib).

Contenido de refs.bib:

@book{wickham2016,
  title={ggplot2: Elegant Graphics for Data Analysis},
  author={Wickham, Hadley},
  year={2016},
  publisher={Springer}
}

Luego, referencia este archivo en el YAML (bibliography: refs.bib). Ahora puedes citar fuentes en tu texto usando la clave de la referencia, como [@wickham2016]. El paquete ggplot2 [@wickham2016] es una herramienta fundamental para la visualización de datos en R.

Al final del documento, puedes generar automáticamente la lista de referencias.

Referencias